package com.yellowpage.bigdata.action;
  
import com.opensymphony.xwork2.ActionContext;
import com.yellowpage.bigdata.data.NspOnofflogTaRegionTypeDayEntity;
import com.yellowpage.bigdata.service.NspFatallogRequsetSumService;
import com.yellowpage.bigdata.service.NspOnofflogTaRegionTypeDayEntityService;
import com.yellowpage.ca.data.User;
import com.yellowpage.ca.service.RegionService;
import com.yellowpage.tool.Excelexport;
import com.yellowpage.white.common.Configuration;
import com.yellowpage.white.struts.BaseAction;
import net.sf.json.JSONArray;

import java.io.UnsupportedEncodingException;
import java.util.*;

public class NspOnofflogTaRegionTypeDayEntityAction extends BaseAction {

    public String RESULT_QUERY = "query";
    public String RESULT_ADD = "add";
	public String RESULT_EDIT = "edit";


	private JSONArray result;

	public JSONArray getResult() {
		return result;
	}

	public void setResult(JSONArray result) {
		this.result = result;
	}

	private Configuration configuration;
	
	public void setConfiguration(Configuration configuration) {
		this.configuration = configuration;
	}
	
	private List<NspOnofflogTaRegionTypeDayEntity> nspOnofflogTaRegionTypeDayEntityList = new ArrayList<NspOnofflogTaRegionTypeDayEntity>();
	private List<Map> resultList = new ArrayList<Map>();
	
	private NspOnofflogTaRegionTypeDayEntity nspOnofflogTaRegionTypeDayEntity;
	private NspOnofflogTaRegionTypeDayEntityService nspOnofflogTaRegionTypeDayEntityService;
	
	private String selectedId;	
	private String[] selectedIds;	
	private String message;
	
		private String query_imeiDayCount;
		private String query_imeiAllCount;
		private String query_imeiNewCount;
		private String query_createUser;
		private String query_regionCode;
		private String query_logDate;
		private String query_createTime;
		private String query_note;
		private String query_id;
		private String query_type;
		private String query_logDate_end;
		private RegionService regionService;
		private Map<String, String> regionMap;
		private NspFatallogRequsetSumService nspFatallogRequsetSumService;


	public String getRegionSql() {
		Map session = ActionContext.getContext().getSession();
		User user = (User) session.get("userObject");
		String function_code = "OMC_CLIENT_LOG_COUNT_DAY_REGIONCOUNT";
		String regionsql = regionService.getRegionclauseByUserFunction(
				user.getUserId(), function_code, "REGION_CODE");
		return regionsql;
	}
	/**
	 * ajax获取各省名称,存入session，避免重复查询影响性能
	 */
	public String queryChannel() {
		Map session = ActionContext.getContext().getSession();
		List regionNames = (List) session.get("regionNames");
		if (regionNames == null || regionNames.size() == 0) {
			resultList.add(nspFatallogRequsetSumService.getRegionMap(getRegionSql()));
			regionNames = resultList;
			session.put("regionNames", resultList);
		}
		this.result = JSONArray.fromObject(regionNames);
		return SUCCESS;
	}

	public void prepare() {
		super.prepare();
	
		if (this.selectedId != null && !this.selectedId.equals("")) {
			this.nspOnofflogTaRegionTypeDayEntity = nspOnofflogTaRegionTypeDayEntityService.getNspOnofflogTaRegionTypeDayEntity(Long.parseLong(selectedId));
		}
	}

	public String queryByPage() {
		initPageRender();

		Map queryMap = new HashMap();

		String regionsStr = "(";//regionNames拼接成查询list
		if (query_regionCode != null && !"".equals(query_regionCode)) {
			try {
				query_regionCode = java.net.URLDecoder.decode(query_regionCode, "UTF-8");
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
			String[] regions = query_regionCode.replaceAll("，", ",").split(",");
			for (String region : regions) {
				regionsStr += "\"" + region.trim() + "\",";
			}
			regionsStr = regionsStr.substring(0, regionsStr.length() - 1);

		}
		regionsStr += ")";

		queryMap.put("query_logDate_end", query_logDate_end);
		queryMap.put("query_type", query_type);
		queryMap.put("logDate", query_logDate);
		queryMap.put("regionCode", regionsStr);


		resultList = nspOnofflogTaRegionTypeDayEntityService.queryNspOnofflogTaRegionTypeDayEntityByPage(queryMap, pageRender);

		setPageRenderToRequest();

		return RESULT_QUERY;
	}

	//给出excel导出策略
	public void exportExcel()

	{
		Map queryMap = new HashMap();


		queryMap.put("logDate", query_logDate);
		String regionsStr = "(";//regionNames拼接成查询list
		if (query_regionCode != null && !"".equals(query_regionCode)) {
			try {
				query_regionCode = java.net.URLDecoder.decode(query_regionCode, "UTF-8");
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
			String[] regions = query_regionCode.replaceAll("，", ",").split(",");
			for (String region : regions) {
				regionsStr += "\"" + region.trim() + "\",";
			}
			regionsStr = regionsStr.substring(0, regionsStr.length() - 1);

		}
		regionsStr += ")";
		queryMap.put("regionCode", regionsStr);
		queryMap.put("query_logDate_end", query_logDate_end);
		queryMap.put("query_type", query_type);

		if(resultList != null){

			resultList = nspOnofflogTaRegionTypeDayEntityService.queryNspOnofflogTaRegionTypeDayEntityByPage(queryMap,null);
		}

		LinkedHashMap<String,String> namemap= new LinkedHashMap<String,String>();

		//给出中文名称
		namemap.put("LOG_DATE","日期");
		namemap.put("REGION_CODE","地区代码");
		namemap.put("REGION_NAME", "地区名称");
		namemap.put("TYPE","操作类型");
		namemap.put("IMEI_DAY_COUNT","IMEI当日数");
		namemap.put("IMEI_ALL_COUNT","IMEI累计数");
		namemap.put("IMEI_NEW_COUNT","IMEI新增数");


		Excelexport.exportExcel(resultList, this.getClass().getName(), namemap);


	}

	public String toAdd() {
		return RESULT_ADD;
	}
	
	public String save() {
	    
		nspOnofflogTaRegionTypeDayEntityService.saveNspOnofflogTaRegionTypeDayEntity(nspOnofflogTaRegionTypeDayEntity);		
		
		message = "新增成功!";
		return RESULT_ADD;
	}
	
	public void validateSave() {
		if (nspOnofflogTaRegionTypeDayEntity.getCreateUser().length() == 0) {
			this.addActionError("** CreateUser 不能为空 !");
		}
			    	    	    if (nspOnofflogTaRegionTypeDayEntity.getRegionCode().length() == 0) {
			this.addActionError("** RegionCode 不能为空 !");
		}
			    	    	    if (nspOnofflogTaRegionTypeDayEntity.getLogDate().length() == 0) {
			this.addActionError("** LogDate 不能为空 !");
		}
			    	    	    	    	    if (nspOnofflogTaRegionTypeDayEntity.getNote().length() == 0) {
			this.addActionError("** Note 不能为空 !");
		}
			    	    	    	    	    if (nspOnofflogTaRegionTypeDayEntity.getType().length() == 0) {
			this.addActionError("** Type 不能为空 !");
		}
			    	    
		this.setValidatorResult("/bigdata/NspOnofflogTaRegionTypeDayEntityAdd.jsp");		
	}
	
	public String toEdit() {
	    Long id = new Long(selectedId);
	    
	    nspOnofflogTaRegionTypeDayEntity = nspOnofflogTaRegionTypeDayEntityService.getNspOnofflogTaRegionTypeDayEntity(id);
	
		return RESULT_EDIT;
	}
	
	public String update() {
	
	    nspOnofflogTaRegionTypeDayEntityService.updateNspOnofflogTaRegionTypeDayEntity(nspOnofflogTaRegionTypeDayEntity);	

		message = "修改成功!";
	    
		return RESULT_EDIT;
	}
	
	public void validateUpdate() {
		if (nspOnofflogTaRegionTypeDayEntity.getCreateUser().length() == 0) {
			this.addActionError("** CreateUser 不能为空 !");
		}
			    			    if (nspOnofflogTaRegionTypeDayEntity.getRegionCode().length() == 0) {
			this.addActionError("** RegionCode 不能为空 !");
		}
			    			    if (nspOnofflogTaRegionTypeDayEntity.getLogDate().length() == 0) {
			this.addActionError("** LogDate 不能为空 !");
		}
			    			    			    if (nspOnofflogTaRegionTypeDayEntity.getNote().length() == 0) {
			this.addActionError("** Note 不能为空 !");
		}
			    			    			    if (nspOnofflogTaRegionTypeDayEntity.getType().length() == 0) {
			this.addActionError("** Type 不能为空 !");
		}
			    		this.setValidatorResult("/bigdata/NspOnofflogTaRegionTypeDayEntityUpdate.jsp");	
	}
	
	public String delete() {	    
	    List ids = new ArrayList();
	    
		for(String id : selectedIds){
			ids.add(Long.valueOf(id));
		}
		
		try {
			this.nspOnofflogTaRegionTypeDayEntityService.delete(ids);
		} catch (Exception e) {
			System.out.println("异常....");
			this.addActionError("** 可能含有子记录约束冲突,删除失败 !");
		}
		
		
		return queryByPage();
	}	
	
	

	/**
	 * getters and setters
	 * 
	 * @return
	 */
	 public void setNspOnofflogTaRegionTypeDayEntity(NspOnofflogTaRegionTypeDayEntity nspOnofflogTaRegionTypeDayEntity) {
		this.nspOnofflogTaRegionTypeDayEntity = nspOnofflogTaRegionTypeDayEntity;
	}
	
	public NspOnofflogTaRegionTypeDayEntity getNspOnofflogTaRegionTypeDayEntity() {
		return nspOnofflogTaRegionTypeDayEntity;
	}
	 
	 
	 public void setNspOnofflogTaRegionTypeDayEntityService(NspOnofflogTaRegionTypeDayEntityService nspOnofflogTaRegionTypeDayEntityService) {
		this.nspOnofflogTaRegionTypeDayEntityService = nspOnofflogTaRegionTypeDayEntityService;
	}
	
	public List<NspOnofflogTaRegionTypeDayEntity> getNspOnofflogTaRegionTypeDayEntityList() {
		return nspOnofflogTaRegionTypeDayEntityList;
	}

	public void setNspOnofflogTaRegionTypeDayEntityList(List<NspOnofflogTaRegionTypeDayEntity> nspOnofflogTaRegionTypeDayEntityList) {
		this.nspOnofflogTaRegionTypeDayEntityList = nspOnofflogTaRegionTypeDayEntityList;
	}
	
	public String getSelectedId() {
		return selectedId;
	}

	public void setSelectedId(String selectedId) {
		this.selectedId = selectedId;
	}

	public String[] getSelectedIds() {
		return selectedIds;
	}

	public void setSelectedIds(String[] selectedIds) {
		this.selectedIds = selectedIds;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
	
	public List<Map> getResultList() {
		return resultList;
	}

	public void setResultList(List<Map> resultList) {
		this.resultList = resultList;
	}
	
	    public String getQuery_imeiDayCount() {
        return this.query_imeiDayCount;
    }
    
    public void setQuery_imeiDayCount(String imeiDayCount){
        this.query_imeiDayCount = imeiDayCount;
    }    

        public String getQuery_imeiAllCount() {
        return this.query_imeiAllCount;
    }
    
    public void setQuery_imeiAllCount(String imeiAllCount){
        this.query_imeiAllCount = imeiAllCount;
    }    

        public String getQuery_imeiNewCount() {
        return this.query_imeiNewCount;
    }
    
    public void setQuery_imeiNewCount(String imeiNewCount){
        this.query_imeiNewCount = imeiNewCount;
    }    

        public String getQuery_createUser() {
        return this.query_createUser;
    }
    
    public void setQuery_createUser(String createUser){
        this.query_createUser = createUser;
    }    

        public String getQuery_regionCode() {
        return this.query_regionCode;
    }
    
    public void setQuery_regionCode(String regionCode){
        this.query_regionCode = regionCode;
    }    

        public String getQuery_logDate() {
        return this.query_logDate;
    }
    
    public void setQuery_logDate(String logDate){
        this.query_logDate = logDate;
    }    

        public String getQuery_createTime() {
        return this.query_createTime;
    }
    
    public void setQuery_createTime(String createTime){
        this.query_createTime = createTime;
    }    

        public String getQuery_note() {
        return this.query_note;
    }
    
    public void setQuery_note(String note){
        this.query_note = note;
    }    

        public String getQuery_id() {
        return this.query_id;
    }
    
    public void setQuery_id(String id){
        this.query_id = id;
    }    

        public String getQuery_type() {
        return this.query_type;
    }
    
    public void setQuery_type(String type){
        this.query_type = type;
    }

	public NspFatallogRequsetSumService getNspFatallogRequsetSumService() {
		return nspFatallogRequsetSumService;
	}

	public void setNspFatallogRequsetSumService(
			NspFatallogRequsetSumService nspFatallogRequsetSumService) {
		this.nspFatallogRequsetSumService = nspFatallogRequsetSumService;
	}

	public Map<String, String> getRegionMap() {
		return regionMap;
	}

	public void setRegionMap(Map<String, String> regionMap) {
		this.regionMap = regionMap;
	}



	public RegionService getRegionService() {
		return regionService;
	}

	public void setRegionService(RegionService regionService) {
		this.regionService = regionService;
	}

	public String getQuery_logDate_end() {
		return query_logDate_end;
	}

	public void setQuery_logDate_end(String query_logDate_end) {
		this.query_logDate_end = query_logDate_end;
	}


}
